此文同步載於 http://www.dotblogs.com.tw/holmes2136/Default.aspx
某些時候會收到網站的活動圖片在 IE 某些版本 (IE8以下) 下會無法顯示的狀況 ,
而 Chrome 或者其他瀏覽器卻能夠順利瀏覽 , 其原因在於這些圖片
是使用 CMYK 模式下儲存的 , 而 IE 只能讀取 RGB 模式的圖檔 ,
最簡單測試圖片能否顯示的方式是
你可以直接把圖片拖拉到 IE 中 , 看會不會出現肉包 ,
而最簡單的處理方式是你可以使用小畫家再儲存一次就可以了....
但是小弟也有遇過儲存時會出現下列訊息 :
小畫家無法儲存這個檔案 . 存檔時被中斷了 , 所以你的檔案並未儲存
也可以參考保哥的解決方式
http://blog.miniasp.com/post/2008/07/13/JPEG-Image-cannot-be-displayed-in-Internet-Explorer.aspx
另外有一個線上 CMYK 轉 RGB 的服務 : 網址
不過轉下去可能與原本的圖片會有差距 ....
可以參考下列的 Code 來去判斷圖片是否是 CMYK ,
其會取得圖片的像素資料的屬性旗標來判斷 ,
{
System.Drawing.Bitmap img = new System.Drawing.Bitmap(@"C:\test\cymk1.JPG", true);
if (IsCMYK(img))
Response.Write("yes");
else
Response.Write("No");
}
public static bool IsCMYK(System.Drawing.Image MyImage)
{
bool ReturnVal;
if ((GetImageFlags(MyImage).IndexOf("Ycck") > -1) || (GetImageFlags(MyImage).IndexOf("Cmyk") > -1))
ReturnVal = true;
else
ReturnVal = false;
return ReturnVal;
}
public static string GetImageFlags(System.Drawing.Image MyImage)
{
ImageFlags FlagVals = (ImageFlags)Enum.Parse(typeof(ImageFlags), MyImage.Flags.ToString());
return FlagVals.ToString();
}